package com.aiwiown.face.request;

import com.aiwiown.face.ApiMethod;
import com.aiwiown.face.ApiObject;
import com.aiwiown.face.ApiRequest;
import com.aiwiown.face.internal.util.RequestParamUtils;
import com.aiwiown.face.response.FaceThousandlandmarkResponse;

import java.util.Map;

/**
 * https://console.faceplusplus.com.cn/documents/55107022
 * 描述
 * 传入图片或是从 Detect API 检测出的人脸标识 face_token，获得人脸的1000点关键点信息，对五官和脸部轮廓进行精确定位。
 * 一次调用支持一张人脸的关键点分析。如果图片中有多张人脸，只对人脸框面积最大的一个人脸进行分析。 （相同面积，随机选一张人脸）
 * 本API是对人脸各部位的五官进行精确定位，推荐使用正脸高清大图获得最佳效果。
 * @ClassName : FaceThousandlandmarkRequest
 * @Description : 稠密关键点
 * @Author : dbin0123
 * @Date: 2020-05-16 09:59
 */
public class FaceThousandlandmarkRequest implements ApiRequest<FaceThousandlandmarkResponse> {

    private String apiVersion = "v3";
    private static String apiUrl = "/face/thousandlandmark";

    private String bizContent;
    private ApiObject bizModel = null;

    @Override
    public ApiMethod getApiMethod() {
        return ApiMethod.POST;
    }

    @Override
    public String getApiUrl() {
        return "/" + this.apiVersion + apiUrl;
    }

    @Override
    public Map<String, String> getTextParams() throws IllegalAccessException {
        return RequestParamUtils.getTextParams(this.bizModel);
    }

    @Override
    public Map<String, byte[]> getByteArrayParams() throws IllegalAccessException {
        return RequestParamUtils.getByteArrayParams(this.bizModel);
    }

    @Override
    public Class<FaceThousandlandmarkResponse> getResponseClass() {
        return FaceThousandlandmarkResponse.class;
    }

    @Override
    public String getApiVersion() {
        return this.apiVersion;
    }

    @Override
    public String getBizContent() {
        return this.bizContent;
    }

    public void setBizModel(ApiObject bizModel) {
        this.bizModel = bizModel;
    }

    @Override
    public String signVersion() {
        return null;
    }

    @Override
    public String getSignInfo(String apiKey, String secretKey) throws Exception {
        return null;
    }
}
